package wrapper.push_message;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import net.minidev.json.JSONObject;

/**
 * Created by chpengzh <cpz@youjianghr.com> on 2015/7/18.
 * 发送消息的内容,重载toJSONString方法转化为post报文内容
 */
@JsonSerialize(include= JsonSerialize.Inclusion.NON_DEFAULT)
public class MessageEntity{

    private String appkey;              // 必填 友盟消息推送服务对设备的唯一标识。Android的device_token是44位字符串, iOS的device-token是64位。
    private String timestamp;           // 必填 时间戳，10位或者13位均可，时间戳有效期为10分钟
    private String type;                // 必填 消息发送类型,其值可以为:
    private String device_tokens;       // 可选 设备唯一表示
    private String alias_type;          // 可选 当type=customizedcast时，必填，alias的类型,
    private String alias;               // 可选 当type=customizedcast时, 开发者填写自己的alias。
    private String file_id;             // 可选 当type=filecast时，file内容为多条device_token,
    private JSONObject filter;              // 可选 终端用户筛选条件,如用户标签、地域、应用版本以及渠道等,
    private PayLoad payload;            // 必填 消息内容(Android最大为1840B), 包含参数说明如下(JSON格式):
    private Policy policy;              // 可选 发送策略
    private boolean production_mode;     // 可选 正式/测试模式。测试模式下，只会将消息发给测试设备。
    private String description;         // 可选 发送消息描述，建议填写。
    private String thirdparty_id;       // 可选 开发者自定义消息标识ID, 开发者可以为同一批发送的多条消息

    public MessageEntity(){
        setFilter(new JSONObject());
    }

    //General Getter & Setter
    public String getAppkey() {
        return appkey;
    }

    public void setAppkey(String appkey) {
        this.appkey = appkey;
    }

    public String getTimestamp() {
        return timestamp;
    }

    public void setTimestamp(String timestamp) {
        this.timestamp = timestamp;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getDevice_tokens() {
        return device_tokens;
    }

    public void setDevice_tokens(String device_tokens) {
        this.device_tokens = device_tokens;
    }

    public String getAlias_type() {
        return alias_type;
    }

    public void setAlias_type(String alias_type) {
        this.alias_type = alias_type;
    }

    public String getAlias() {
        return alias;
    }

    public void setAlias(String alias) {
        this.alias = alias;
    }

    public String getFile_id() {
        return file_id;
    }

    public void setFile_id(String file_id) {
        this.file_id = file_id;
    }

    public JSONObject getFilter() {
        return filter;
    }

    public void setFilter(JSONObject filter) {
        this.filter = filter;
    }

    public PayLoad getPayload() {
        return payload;
    }

    public void setPayload(PayLoad payload) {
        this.payload = payload;
    }

    public Policy getPolicy() {
        return policy;
    }

    public void setPolicy(Policy policy) {
        this.policy = policy;
    }

    public boolean getProduction_mode() {
        return production_mode;
    }

    public void setProduction_mode(boolean production_mode) {
        this.production_mode = production_mode;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getThirdparty_id() {
        return thirdparty_id;
    }

    public void setThirdparty_id(String thirdparty_id) {
        this.thirdparty_id = thirdparty_id;
    }

}
